﻿#include "stdafx.h"
#include "eng_type.h"
#include "Globalvf.h"
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 서버 이름 얻기.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
static char g_szActivePath[256];
char *gGetActivePath()
{
	/*
	CSystemInf *clsSysInfo = CSystemInf::Instance();
	memset(g_szActivePath,0,256);
	int	nRet = clsSysInfo->GetActiveProjectPath(g_szActivePath);
	if(nRet == 0)
		return (char *)0;
	sprintf_s(g_szActivePath,256,"D:\\MP5000\\project\\pas");
	*/
	char *libvar = NULL;

	size_t len;
	errno_t err = _dupenv_s( &libvar, &len, "LITE_BASE_DB" );
	memset(g_szActivePath,0, 256);
	if( libvar == NULL )
		strncpy_s(g_szActivePath,256,"..\\",strlen("..\\"));
	else
		strncpy_s(g_szActivePath,256,libvar,strlen(libvar));
	return g_szActivePath;
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 환경 설정값들.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 서버 이름 얻기.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
/*
	[SERVER]
	DBNAME      = "ReportDbAA.db"
	PORT        = 8000
	TIMEOUT     = 700
	ISARCHIVE   = 1
	ISLOG       = 1

	[BACKUPUTIL]
	ISBACKUP    = 1
	DELARCHIVE  = 1
	BACKUPPATH  = "C:\TEMP\BK.db"
*/
char g_szDBFileName[1025];
int  g_nPort;
int  g_nTimeout;
BOOL g_bIsArchive;
char g_szArchiveDir[1025];
BOOL g_bIsLog;
char g_szLogDir[1025];

int  g_nIsBackup;
char g_szBackupDir[1025];
int  g_nDelArchive;
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 끝.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 환경을 읽고, 변수에 저장 한다.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
BOOL  ReadEnv()
{
	//==================================================
	// 변수 선언.
	//==================================================
	CString str;
	wchar_t wszValue[1024];
	char    szTemp[1024];
	//==================================================
	// 환경 전체 패스 읽기.
	//==================================================
	char *pPath =  gGetActivePath();
	if( pPath == NULL)
		return FALSE;
	//memset(wszValue,0,sizeof(wszValue));
	//MultiByteToWideChar(CP_ACP, 0, pPath,strlen(pPath), wszValue, 1024);
	//str.Format(_T("%s"),wszValue);
	//==================================================
	// DB Name 읽기.
	//==================================================
	//memset(wszValue,0,sizeof(wszValue));
	//GetPrivateProfileString(SEC_SERVER,KEY_DBFILENAME,_T("reportdb.db"),wszValue,1024,str);
	WCHAR2CHAR(wszValue,szTemp,1024)
	//sprintf_s(szTemp,FMT_DBNAME,pPath,szValue);
	gSetDBFileName(pPath);
	/*
	//==================================================
	// 포트 번호 읽기
	//==================================================
	nValue = GetPrivateProfileInt(SEC_SERVER,KEY_PORT,9712,str);
	gSetPort(nValue);
	//==================================================
	// Time out 읽기.
	//==================================================
	nValue = GetPrivateProfileInt(SEC_SERVER,KEY_TIMEOUT,3600,str);
	gSetTimeout(nValue);
	//==================================================
	// 아카이브 여부 읽기.
	//==================================================
	nValue = GetPrivateProfileInt(SEC_SERVER,KEY_ISARCHIVE,1,str);
	gSetIsArchive(nValue);
	//==================================================
	// 아카이브 디렉토리 결정. // INI에는 없으나, 필요하다.
	//==================================================
	memset(g_szArchiveDir,0,1025);
	//D:\MP5000\project\pas\report\Database\archivelog
	sprintf_s(g_szArchiveDir,1024,FMT_ARCHIVE,pPath);
	//==================================================
	// 로그를 남길 것인가? 말 것인가?
	//==================================================
	nValue = GetPrivateProfileInt(SEC_SERVER,KEY_ISLOG,1,str);
	gSetIsLog(nValue);
	//==================================================
	// 로그 디렉토리 결정. // INI에는 없으나, 필요하다.
	//==================================================
	memset(g_szLogDir,0,1025);
	//D:\MP5000\project\pas\report\Database\ 
	sprintf_s(g_szLogDir,1024,FMT_LOGFILE,pPath);
	//==================================================
	// 백업 여부 읽기.
	//==================================================
	nValue = GetPrivateProfileInt(SEC_BACKUP,KEY_ISBACKUP,1,str);
	gSetIsBackup(nValue);
	//==================================================
	// 백업 디렉토리.
	//==================================================
	memset(wszValue,0,sizeof(wszValue));
	GetPrivateProfileString(SEC_BACKUP,KEY_BACKUPDIR,_T(""),wszValue,1024,str);
	WCHAR2CHAR(wszValue,szTemp,1024)
	gSetBackupDir(szTemp);
	//==================================================
	// 아카이브 파일 지우기 여부
	//==================================================
	nValue = GetPrivateProfileInt(SEC_BACKUP,KEY_DELARCHIVE,1,str);
	g_nDelArchive = nValue;
	*/
	return TRUE;
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// DB File Name Get/Set
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
const char * gGetDBFileName()
{
	return g_szDBFileName;
}
void gSetDBFileName(const char * pFileName)
{
	memset(g_szDBFileName,0,1025);
	STRCPY(g_szDBFileName,(char*)pFileName,1025);
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 대기 포트 Get/Set
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
int gGetPort()
{
	return g_nPort;
}
void gSetPort(const int nPort)
{
	g_nPort = nPort;
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// Time Out Get/Set
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
int gGetTimeout()
{
	return g_nTimeout;
}
void gSetTimeout(const int nTimeout)
{
	g_nTimeout = nTimeout;
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// Backup 할지 말지  Get/Set
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
int   gGetIsBackup()
{
	return g_nIsBackup;
}
void   gSetIsBackup(const int nBackup)
{
	g_nIsBackup = nBackup;
}
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// Backup 디렉토리 Get/Set
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
const char * gGetBackupDir()
{
	return g_szBackupDir;
}
void gSetBackupDir(const char * pDir)
{
	memset(g_szBackupDir,0,1025);
	STRCPY(g_szBackupDir,(char*)pDir,1025);
}
